Using Boolean Objects 

A Boolean Object (icon) is any Knowledge Builder Object derived from any Boolean type Base Class. It can only have one of two states True or False, although these states can be given other names (e.g. Yes & No)
It is recommended that Boolean Objects are always set and compared with the reserved words TRUE and FALSE, regardless of their value names (or compared with other Boolean Objects).
For compatibility with other deployments, the JavaScript Engine deployment allows Boolean Objects to be assigned to both literal & Variable Strings that correspond to the names given to its True/False states. However (by default) the JavaScript Engine deployment (unlike XrServer-based deployments) does not permit a comparison between a Boolean Object and List Objects or String Objects/Variables, even if they contain the same runtime values as the Boolean Object. There is however a Deployment option for the JavaScript Engine called "Treat Booleans as Lists" which, if set to True, will allow Boolean to be compared with List and String/Text Objects (this option adds some overheads to the deployed application which could affect its performance)
For example, if a Boolean Object (Boolean_Attribute1) has the Values Yes & No, then the following 2 examples of code would be valid:
@If Boolean_Attribute1 = 'Yes'  
        @Debug 'Yes / True' 
@Else 
        @Debug 'No / False' 
@Endif

@If Boolean_Attribute1  
        @Debug 'Yes / True' 
@Else 
        @Debug 'No / False' 
@Endif

But the following code would be invalid, unless the deployment setting "Treat Booleans as Lists" is set to True:
@Assign List_Attribute1  =  'Yes'
@Assign Boolean_Attribute1 = 'Yes'
@If Boolean_Attribute1 = List_Attribute1 
      @Debug 'this line will never be executed unless (Treat Booleans as Lists) is set to True
@Else  
      @Debug 'This line will always be executed unless (Treat Booleans as Lists) is set to True'  
@Endif